{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "603d9346-b2e7-4b64-928e-a4aaf64eac5e",
   "metadata": {
    "tags": []
   },
   "source": [
    "# Python简介\n",
    "\n",
    "## Python的产生\n",
    "\n",
    "Python语言是由荷兰程序员Guido van Rossum独立开发完成初版的。Guido，江湖人称“龟叔”，曾供职于Google、Dropbox，退休一阵之后，\n",
    "感觉退休生活太无聊了，2020年底又去微软上班了。  \n",
    "1989年圣诞节期间，在荷兰的阿姆斯特丹，为了打发圣诞节的无趣，决心开发一个新的脚本解释语言，作为ABC语言的一种继承，\n",
    "然后他就这么做了，并实现了（大神的能力）Python。  \n",
    "之所以选中Python作为该编程语言的名字，是因为他是一个叫Monty Python喜剧团体的爱好者，\n",
    "其本意并不是想选条蟒蛇。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8f9aea03-50ba-469c-93dc-8993ba7e6541",
   "metadata": {
    "tags": []
   },
   "source": [
    "## Python的代码片段"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "ed86d944-258e-485c-97d5-37e4c840e82e",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['G:\\\\my_doc\\\\python-learner\\\\01', 'E:\\\\miniconda3\\\\python39.zip', 'E:\\\\miniconda3\\\\DLLs', 'E:\\\\miniconda3\\\\lib', 'E:\\\\miniconda3', '', 'E:\\\\miniconda3\\\\lib\\\\site-packages', 'E:\\\\miniconda3\\\\lib\\\\site-packages\\\\win32', 'E:\\\\miniconda3\\\\lib\\\\site-packages\\\\win32\\\\lib', 'E:\\\\miniconda3\\\\lib\\\\site-packages\\\\Pythonwin', 'E:\\\\miniconda3\\\\lib\\\\site-packages\\\\IPython\\\\extensions', 'C:\\\\Users\\\\dell\\\\.ipython']\n"
     ]
    }
   ],
   "source": [
    "import sys\n",
    "import os\n",
    "\n",
    "def main():\n",
    "    print(sys.path)\n",
    "    \n",
    "if __name__ == '__main__':\n",
    "    main()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "18ed80d0-58ed-42a2-b4d3-68b8510891be",
   "metadata": {},
   "source": [
    "以上是一段简单的Python代码，它打印出Python安装的系统目录，对初学者来说，可能不明就里。 我们再来一段更简单的："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "5d0f3c7b-974a-4ba9-af1d-e7cb3424a1c1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4\n"
     ]
    }
   ],
   "source": [
    "i = 1\n",
    "j = 3\n",
    "n = i + j\n",
    "print(n)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0854a203-b487-4e8f-a2d4-dcfaa1277f60",
   "metadata": {},
   "source": [
    "以上Python代码片段，只要是学习过小学数学的，应该都知道，简单的加法运算。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "88463579-1015-40ed-b348-bb3f4aab58f3",
   "metadata": {
    "tags": []
   },
   "source": [
    "## 什么是编程语言\n",
    "\n",
    "我们说Python语言，到底什么是编程语言？  \n",
    "编程语言(Programming Language)，是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧，用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据，并精确地定义在不同情况下所应当采取的行动。  \n",
    "看起来还是十分抽象，其实初学者可以不管它，像上面写一些简单的代码之后，就知道什么事编程语言了。\n",
    "\n",
    "## 什么是编程\n",
    "\n",
    "编程就是写那些指令的过程，我们使用一种编程语言来实现这些指令的编写，这些指令被翻译成计算机能够读懂的格式，最后由计算机执行指令。  \n",
    "同样，我们也不用管具体什么事编程，可能你已经听说过编程、程序、程序员、软件开发等等这些名词，反正都在电脑上捣鼓一些英文和数字。  "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "562eebb9-e0d3-475f-a412-8cb5ead3b859",
   "metadata": {},
   "source": [
    "## Python能做什么\n",
    "\n",
    "Python能做什么？Python是一门编程语言，用它能编写出软件。  \n",
    "那么Python能编写出哪些类型的软件？或者说现实中有哪些软件，哪些系统平台是用Python编程语言来实现的？  \n",
    "\n",
    "+ Web系统开发: 可以用Python开发一个网站后台，国内的豆瓣就是用Python作为开发语言的。\n",
    "+ 运维系统开发：在系统运维工具方面，Python开发十分合适，如开源Ansible工具就是用Python开发的。\n",
    "+ 数据分析开发：Python在数据分析方面就更出色了，有很多著名的开源库，如Numpy、Scipy、Matplotlib等。  \n",
    "\n",
    "上面简单列了一下Python常见的几个方面开发，其实今天用Python开发的系统太多了，只要你用好了它，很多系统都可以用Python来实现。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "56d051ad-dcff-46e6-ad1f-127d6607f885",
   "metadata": {},
   "source": [
    "## Python不能做什么\n",
    "\n",
    "现在很多Python培训机构网站上，把Python说的无所不能，它真的是什么软件都能开发么？什么领域都适合么？  \n",
    "实际上Python不但不是万能的，而且局限性还很大，软件系统是解决现实中各种实际问题的，各个行业各个领域的情况各不相同，不是Python能解决了的。  \n",
    "其实目前世界上有几百种编程语言，就是流行的、在工业界使用的编程语言也很多，至少十种以上，每种语言都解决了一个或几个领域，而其他领域却不擅长或根本不行。  \n",
    "Python语言的主要问题是执行慢性能差，因为它一种解释型的语言，不是一种编译型的语言，暂且不要管解释型和编译型的区别，反正就是Python性能不行。  \n",
    "还有就是它是解释型的动态语言，是一种偏上层的语言，注定它在底层开发领域是不行的，这些领域它直接就做不了，它离汇编、硬件资源远着呢。 \n",
    "* 操作系统  \n",
    "我们今天不管你用台式机，还是用笔记本，还是手机Iphone或Android, 还是平板，还是嵌入式设备，这些东西要跑起来，离不开一个基础系统软件，叫操作系统。   \n",
    "Python语言就不能用来开发操作系统，其它语言也不行，必须是C语言、C++语言和汇编语言来合作搞定，今天常见的操作系统Windows和Linux，还是你听说过却从来没用过的Unix，都是如此，Python搞不定，Java也搞不定，其它语言都不会被使用。  \n",
    "你可以抬杠说苹果的MacOS系统用了什么语言，你分析看看，它能离开C语言的影子不？  \n",
    "* 数据库  \n",
    "数据库系统软件是一个复杂的重要的软件系统，如Oracle, MySQL, SQLServer等，哪一个都不会用Python这种东西来开发。  \n",
    "* 游戏  \n",
    "游戏软件开发是另一个复杂的领域，真正的大型游戏软件，谁会用Python这种语言？基本都是C++、Object-C、C#、Java霸占天下。你可以举出某些游戏用Python开发的，页游应该有一大把，王者荣耀会用Python开发么？和平精英会用Python开发么？都不会。  \n",
    "* 企业级软件  \n",
    "在今天，企业级软件开发的王者，非我们的Java语言莫属，其它语言占比都不大，当然还有一个C#语言，那不过是Java的Copy而已。  \n",
    "Java语言的开源软件生态如此丰富庞大，是其它语言无法企及的，一个Apache组织下多少重量级的开源软件，基本都是用Java开发的。  \n",
    "这些领域Python的占比都是很小的，在大规模的企业团队开发中，Python这种动态语言，很多编程错误在运行时才被发现，这个对大型软件协作开发是不友好的，所以企业是不会选择Python的。  "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "71b5d6ae-1222-4f02-bd4a-71a7abfb5998",
   "metadata": {},
   "source": [
    "## Python在现实企业开发中的使用情况\n",
    "\n",
    "Python在美国在世界软件开发中的使用情况，实际情况我无从得知，看每月的排行榜还不错，但绝对不是第一，不是那些培训机构所忽悠出来的情况。  \n",
    "在中国职业软件开发中，Python实际上占比不大，看分析文章没有用，自己在51job这些大型招聘网站注册一个个人账号，然后按开发语言搜索一下开发职位，你看看是Python开发职位多，还是Java和C#开发职位多，数据说话一目了然。  \n",
    "而且，从实际的开发职位薪资待遇，看看Python情况如何，我曾经在51job上分析了一下，Python的职位待遇总体水平堪忧啊。  \n",
    "所以，有时候说Python作为一门入门编程语言是很好的，这个讲法是有道理的，入门语言只要简单易学，其它可以暂不考虑嘛。  \n",
    "在中国的大学教学里，当年我们是以C、C++、Pascal为主，今天应该是以C、C++、Java为主吧，我认为是有道理的，一个职业程序员理解了指针或引用，在实际开发工作中是占有很大优势的，他才能真正理解很多性能问题、运行问题。  \n",
    "这里不是说叫大家不要学习Python了，是不要盲目崇拜Python, 是不要被培训机构所蒙蔽了，你要入门，你要学学来解决一些问题，学Python没错。你要继续进一步加深功力，我也建议你去学一下C和C++，数据结构和算法，这些知识会让你对软件系统理解更深刻。  "
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
